package top.lshaci.learning.activiti.day2;

import cn.hutool.core.lang.Dict;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

import static top.lshaci.learning.activiti.util.ProcessEngineSingleton.singleton;

/**
 * DynamicAssignTask2Test
 * <p>自动任务分配测试2</p>
 * <pre>
 *     表达式方式：动态任务分配处理器
 *     使用步骤：
 *      1、创建一个类，实现一个 {@link TaskListener} 接口
 *      2、完成实现方法相关逻辑
 *      3、把这个类，配置到流程中
 * </pre>
 *
 * @author lshaci
 * @since 1.0.0
 */
public class DynamicAssignTask2Test {

    @Test
    public void test() {
        // 1.部署流程
        Deployment deployment = singleton.deploy("DynamicAssignTask2");
        System.err.println(deployment);
        // 2.启动流程
        Dict variables = Dict.create().set("leaveUser", "小光");
        ProcessInstance processInstance = singleton.runtimeService()
                .startProcessInstanceByKey("DynamicAssignTask2", variables);
        String processInstanceId = processInstance.getId();
        System.err.println("processInstanceId: " + processInstanceId);
        // 3.查询任务
        Task t1 = singleton.personalTask("小光").get(0);
        System.err.println(t1);

        // 4.完成任务
        singleton.taskService().complete(t1.getId());

        // 5.查询任务
        Task t2 = singleton.personalTask("小光经理").get(0);
        System.err.println(t2);

        // 6.完成任务
        singleton.taskService().complete(t2.getId());
    }
}
